CREATE MATERIALIZED VIEW
CREATE MATERIALIZED VIEW文は、SelectQuery句で指定された表に対するビューを作成します。ビューを作成するために使用された元の表は、ディテール表と呼ばれます。
アクセス制御
TimesTenインスタンスでアクセス制御が有効な場合、この文にはDDL権限が必要です。
SQL構文
CREATE MATERIALIZED VIEW ViewName AS SelectQuery
[PRIMARY KEY (ColumnName [,...])]
[UNIQUE HASH ON (HashColumnName [,...])
PAGES = PrimaryPages]
パラメータ
CREATE MATERIALIZED VIEW文には、次のパラメータがあります。
ViewName | 新しいビューに割り当てる名前を指定します。 |
SelectQuery | ビューで使用される、ディテール表の列を選択します。ビューに対して索引を作成することも可能です。 |
ColumnName | 作成されるビューの主キー列の名前を指定します。主キーには最大16列を指定できます。ビュー表の結果列の名前は、一意である必要があります。表または所有者の要素を列名の定義に含めることはできません。 |
HashColumnName | ビューに定義された列をこの表のハッシュ・キーに含めます。ハッシュ索引に指定された列は、主キーに指定された列と同じである必要があります。 |
PrimaryPages | 表の想定ページ数を指定します。この数値に基づいて、ハッシュ索引用に作成されるハッシュ・バケットの数が決まります。最小値は1、最大値は268,435,256(2 28/256)です。想定したページ数が少なすぎると、パフォーマンスが低下します。詳細は、 「CREATE TABLE」を参照してください。 |
説明
ビューとディテール表の制限事項
- ビューは読取り専用であり、直接更新できません。ビューの更新は、関連付けられたディテール表が変更された場合にのみ実行されます。このため、ビューでDELETE、UPDATEまたはINSERT文を実行することはできません。
- マテリアライズド・ビューが更新されたときに、オーバーフローまたはアンダーフロー状態が発生するように指定されている場合、レプリケートされた表に定義されたマテリアライズド・ビューで、レプリケーション障害または非一貫性が発生する場合があります。
- ディテール表はレプリケートできますが、ビュー自体はレプリケートできません。ディテール表がレプリケートされると、対応するビューがTimesTenによって自動的に更新されます。
- ビューとそのディテール表は、いずれもキャッシュ・グループの構成要素にすることはできません。
- ビューやディテール表に対して、TimesTenが自動的に索引を作成することはありません。ビューに対して参照索引は定義できません。
- ビューの変更にALTER TABLE文を使用することはできません。DROP VIEW文を使用し、その後でCREATE MATERIALIZED VIEW文を使用して新しいビューを作成する必要があります。
MATERIALIZED VIEW問合せの制限
ビューの定義に使用される問合せには、いくつかの制限があります。
- ビュー定義のSELECT *問合せは、ビューの作成時に実行されます。ビューの作成後に追加された列は、ビューには反映されません。
- 一時表は、マテリアライズド・ビュー定義では使用できません。非マテリアライズド・ビューおよび導出表は、マテリアライズド・ビューを定義するときに使用できません。
- GROUP BYのリストに含まれるすべての列が、SELECT構文のリストに含まれている必要があります。
- 集計ビューのSELECT構文のリストに、COUNT(*)が含まれている必要があります。
- SUMとCOUNTは使用可能です。ただし、AVGのように、それらを利用する式は使用できません。
- SELECT構文のリストの各式には、一意の名前が必要です。列の別名が定義されていないかぎり、単純にその列の名前が使用されます。ROWIDは式とみなされるため、別名が必要です。
- SELECT FOR UPDATEまたはSELECT FOR INSERT文は、ビューでは使用できません。
- OUTER JOINは使用できますが、SELECTリストは、OUTER JOINに指定した各内部表に1つ以上のNULL値可能でない列を投影する必要があります。マテリアライズド・ビューの定義でのSELECTの外部結合構文は、トップ・レベルのSELECTの場合と同じです。SELECT文に対する制限が適用されます。マテリアライズド・ビューのOUTER JOINを指定するには、(+)記号を使用する必要があります。
- 自己結合を使用できます。自己結合とは、表をその表自体に結合することです。この表はFROM句に2度現れ、その後ろに表の別名が続き、結合条件に使用する列名を修飾します。TimesTenの今回のリリースで自己結合を使用して作成したマテリアライズド・ビューは、以前のリリースでは正しく動作しません。
例13.28
customer表とbookOrder表の列からマテリアライズド・ビューを作成します。
例13.29
t1表のx1およびy1列からマテリアライズド・ビューを作成します。
例13.30
表t1とt2の列x1およびy1の外部結合から、マテリアライズド・ビューを作成します。
関連項目
CREATE TABLE
CREATE VIEW
DROP VIEW